package edu.scsw.rent;

import java.util.Scanner;

public class MultiUserRentCal {

    // 定义Scanner对象用于接收用户输入
    private Scanner sc;

    // 构造方法，初始化Scanner对象
    public MultiUserRentCal() {
        sc = new Scanner(System.in);
    }

    public static void main(String[] args) {
        // 创建MultiUserRentCal对象
        MultiUserRentCal multiUserRentCal = new MultiUserRentCal();

        // 打印欢迎信息
        System.out.println("欢迎您使用房屋租赁（多用户）租金计算工具");

        // 初始化用户姓名数组
        String[] userNames = multiUserRentCal.initMultiUserName();

        // 计算每个用户的租金
        double[] usersRent = multiUserRentCal.calculateMultiUserRent(userNames.length);

        // 显示每个用户的租金信息
        multiUserRentCal.showMultiUserRent(userNames, usersRent);

        // 关闭Scanner资源
        multiUserRentCal.closeScanner();
    }

    // 初始化多用户姓名
    public String[] initMultiUserName() {
        // 提示用户输入数量
        System.out.println("请输入用户数量：");
        int n = sc.nextInt(); // 接收用户输入的数量
        sc.nextLine(); // 清除换行符

        // 创建用户姓名数组
        String[] userNames = new String[n];

        // 循环接收每个用户的姓名
        for (int i = 0; i < n; i++) {
            System.out.println("输入第" + (i + 1) + "个用户名：");
            userNames[i] = sc.nextLine(); // 接收用户姓名并存入数组
        }

        return userNames; // 返回用户姓名数组
    }

    // 计算总的租金
    public double calculateTotalRent() {
        // 提示用户输入月租金并接收输入
        System.out.println("请输入月租金：");
        double monthRent = sc.nextDouble();

        // 提示用户输入租房时间并接收输入
        System.out.println("请输入租房时间（以月为单位）：");
        int month = sc.nextInt();

        // 提示用户输入物业费用并接收输入
        System.out.println("请输入物业费用：");
        double propertyCost = sc.nextDouble();

        // 提示用户输入其它费用并接收输入
        System.out.println("请输入其它费用：");
        double otherCost = sc.nextDouble();

        sc.nextLine(); // 清除换行符

        // 计算总租金并返回
        return monthRent * month + propertyCost * month + otherCost;
    }

    // 计算多用户的租金
    public double[] calculateMultiUserRent(int userCount) {
        // 创建数组存放每个用户的租金
        double[] usersRent = new double[userCount];

        // 循环计算每个用户的租金
        for (int i = 0; i < userCount; i++) {
            System.out.println("输入第" + (i + 1) + "个用户的租金信息：");
            usersRent[i] = this.calculateTotalRent(); // 调用方法计算租金并存入数组
        }

        return usersRent; // 返回租金数组
    }

    // 显示多用户租金信息
    public void showMultiUserRent(String[] userNames, double[] usersRent) {
        // 打印提示信息
        System.out.println("用户姓名和租金信息如下：");

        // 循环显示每个用户的姓名和租金
        for (int i = 0; i < userNames.length; i++) {
            System.out.println(userNames[i] + " : " + usersRent[i] + "元"); // 打印姓名和租金
        }
    }

    // 关闭Scanner资源
    public void closeScanner() {
        if (sc != null) {
            sc.close(); // 关闭Scanner对象，释放资源
        }
    }
}
